% ch7.tex
% This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 New Zealand License.
% To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/nz
% or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.


\chapter{Un corto capítulo sobre ficheros}\label{ch:ashortchapteraboutfiles}\index{funciones!fichero}

A estas alturas probablemente ya sepas lo que es un fichero.
\par
\noindent
Si tus padres tienen una oficina en casa hay posibilidades de que tengan un armario de archivos de algún tipo.  En estos archivos almacenarán diversos papeles importantes (la mayor parte serán cosas aburridas de mayores), normalmente estarán en carpetas de cartón etiquetadas alfabéticamente o con los meses del año.  Los ficheros de un ordenador son muy similares a esas carpetas de cartón.  Tienen etiquetas (el nombre del fichero), y sirven para almacenar la información importante. Los cajones de un armario de archivos son como los directorios (o carpetas) de un ordenador y sirven para organizar los papeles de forma que sea más sencillo de encontrar.
\par
En el capítulo anterior creamos un fichero utilizando Python. El ejemplo era así:

\begin{WINDOWS}

\begin{listing}
\begin{verbatim}
>>> f = open('c:\\test.txt')
>>> print(f.read())
\end{verbatim}
\end{listing}

\end{WINDOWS}

\begin{MAC}

\begin{listing}
\begin{verbatim}
>>> f = open('Desktop/test.txt')
>>> print(f.read())
\end{verbatim}
\end{listing}

\end{MAC}

\begin{LINUX}

\begin{listing}
\begin{verbatim}
>>> f = open('Desktop/test.txt')
>>> print(f.read())
\end{verbatim}
\end{listing}
 
\end{LINUX}

Un objeto fichero de Python tiene más funciones aparte de \code{read}\index{funciones!fichero!read}. Después de todo, los armarios de ficheros no serían muy útiles si únicamente pudieras abrir un cajón y sacar los papeles, pero no pudieras poner nada dentro.  Podemos crear un fichero nuevo vacío pasando un parámetro adicional cuando llamamos a la función \code{open}:

\begin{listing}
\begin{verbatim}
>>> f = open('mifichero.txt', 'w')
\end{verbatim}
\end{listing}

La 'w' del segundo parámetro es la forma de decirle a Python que queremos escribir en el objeto fichero y no leer de él.  Ahora podemos añadir información en el fichero utilizando la función \code{write}\index{funciones!fichero!write}.

\begin{listing}
\begin{verbatim}
>>> f = open('mifichero.txt', 'w')
>>> f.write('esto es un fichero de prueba')
\end{verbatim}
\end{listing}

Necesitamos decirle a Python cuándo hemos terminado de introducir datos en el fichero y que no queremos escribir nada más---para ello tenemos que utilizar la función \code{close}\index{funciones!fichero!close}.

\begin{listing}
\begin{verbatim}
>>> f = open('mifichero.txt', 'w')
>>> f.write('esto es un fichero de prueba')
>>> f.close()
\end{verbatim}
\end{listing}

Si abres el fichero utilizando tu editor favorito verás que contiene el texto ``esto es un fichero de prueba''.  O mejor aún, podemos usar Python para leerlo de nuevo:

\begin{listing}
\begin{verbatim}
>>> f = open('mifichero.txt')
>>> print(f.read())
esto es un fichero de prueba
\end{verbatim}
\end{listing}

\newpage
